Automatic discover of how and when people met

ABSTRACT

A system, computer-readable storage medium, and computer-implemented method for automatic discovery of how and when people met is provided. In some embodiments, the system obtains a plurality of signals comprising data associated with a user and comprising an electronic communication history between the user and a contact maintained by a contact management system. The system may identify a third party that introduced the user to the contact based on the plurality of signals. The system further determines a suggested entry for the data field of the contact management system is determined. The suggested entry includes a description of how the user initially met the contact and the description includes an identifier of the third party. The suggested entry of how a user met a contact is automatically displayed to a user by the system.

PRIORITY CLAIM

This application is a continuation of and claims the benefit of priorityto U.S. application Ser. No. 13/683,878, filed on Nov. 21, 2012,entitled “AUTOMATIC DISCOVERY OF HOW AND WHEN PEOPLE MET,” which ishereby incorporated by reference.

TECHNICAL FIELD

This patent document pertains generally to data processing systems, andmore particularly, but not by way of limitation, to techniques foranalyzing various information for the purpose of automaticallydiscovering the circumstances around two people becoming acquainted withone another, such that information indicating how and when the twopeople met can be recorded in an address book.

BACKGROUND

Users of the Internet and mobile telecommunication systems retaincontact information across a broad range of contact management systemsprovided by online sites such as networking sites, contact aggregators,address book providers, e-mail providers, and calendar systems. Thecontent of the contact information retained at these sites oftenincludes or is directly related to e-mail, meeting schedules, calendarevent notifications, and telephone call transcriptions, blogs, andpostings. Of course these networking sites collectively include listingsof all the contacts related by this content.

It is often important for a user to recall exactly how and when the usermet a particular contact for which information is retained on one of theabove referenced online sites. Recollection of such information can bevery useful to a. user at later date, especially when the particularcontact is a part of the user's professional network or a potentialsales contact of the user. Additionally, it may be to the user'sadvantage to keep track of a third party that introduced the user to acontact. A user may benefit from being able to identify third partieswho frequently introduce the user to new contacts because those thirdparties are likely to provide additional contacts that may allow a userto expand their professional or sales networks.

Users wishing to record information about how and when the user met acontact are left with limited options for the traditional online sitesreferenced above. If the online site provides a general notes field, theuser may record the explanation of how a user met the contact in thatfield. However, the organization and difficulty in relocating thisinformation can make the process inefficient. Further, users often donot add sufficient detail to such notes and the information may then berendered useless to the user because the information is not completeenough to jog the user's memory concerning the actual circumstancesaround the initial meeting of the contact. Moreover, users frequently donot record this information immediately after the new contact has beenadded and the information concerning how and when the user met thecontact is often forgotten.

BRIEF DESCRIPTION OF DRAWINGS

Some embodiments are illustrated by way of example and not limitation inthe figures of the accompanying drawings in which:

FIG. 1 is a block diagram illustrating a system for automatic discoveryof how and when people met, as may be used in an example embodiment;

FIG. 2 is a block diagram illustrating contact management systemmodules, according to some example embodiments;

FIG. 3 is a flow chart illustrating a method of automatic discovery ofhow and when people met, according to an example embodiment;

FIG. 4 is an interface diagram illustrating a user display of asuggested entry into a data field of a contact management system, as maybe used in an example embodiment;

FIG. 5 is a block diagram of machine in the example form of a computersystem within which a set instructions, for causing the machine toperform any one or more of the methodologies discussed herein, may beexecuted.

DETAILED DESCRIPTION

The present disclosure describes methods, systems and computer programproducts for providing a user with a suggested description of how andwhen the user met a person, who is represented as a contact in a list ofcontacts maintained by a contact management system. In the followingdescription, for purposes of explanation, numerous specific details areset forth in order to provide a thorough understanding of some exampleembodiments. It will be evident, however, to one skilled in the art thatthe present invention may be practiced without these specific details.

Consistent with embodiments of this invention, the suggested descriptionof how a user met a person is provided to the user in a dedicated fieldof a contact record for the person as maintained by the contactmanagement system. The dedicated field is designated specifically forstoring that type of information. Each of the contacts maintained by thecontact management system may have a designated field for thisinformation. Each suggestion of how the user met the contact may beconfirmed, rejected or edited by the user.

Each suggestion of how and when a user met a contact is automaticallyprovided to the user upon addition of the contact to the contentmanagement application, or at some subsequent time, typically during aninteraction that the user has with the contact record for the particularcontact. The suggestion of how and when a user met a contact isdetermined from several pieces of data associated with the user. Thisdata may be from a number of different sources including, for example,social network profile data (e.g., Linkedin, Facebook, Twitter), socialnetwork message history, locally installed. email clients (e.g.,Microsoft Outlook), browser based email clients (e.g., Gmail, Yahoo!Mail, Hotmail), electronic calendar applications, and phone calltranscripts, and other similar data sources.

In one embodiment, a suggestion for how and when a user met a contactmay be based on a single piece of information extracted from any one ofthe above referenced data sources. For example, a user sharing the sameeducational domain name email address as a contact may be provided thesuggestion that the user met the contact while attending the sameeducational institution.

Additionally, a suggestion for how and when a user met a contact may bebased on multiple pieces of information. For example, electroniccalendar data from both the user and the contact may indicate that bothattended the same event and social network profile data may indicate theuser added the contact as a connection the day after the event. In thisexample, the contact management system may provide a user with thesuggestion that the user met the contact at an event based on theinformation provided by the electronic calendar data and social networkprofile data.

According to certain aspects of the present disclosure, each piece ofdata used in determining how and when a user met a contact is weightedaccording to its significance in making that determination. For example,a user may have the same employer listed in a social network profile asa contact and the user may have the same educational domain name emailaddress as a contact, but with a date of attendance that is separated byten years. In this example, the contact management system wouldrecognize that the number of years separating the attendance of acertain university makes the fact that the user and the contact attendedthe same university less significant in determining how and when theuser met the contact. Following this example, the user may be provided asuggestion that the user met the contact while working for the sameemployer.

FIG. 1 is a block diagram illustrating various functional components ofan example system 100 for providing a suggested description of how andwhen a user met a contact, according to an example embodiment. As shownin FIG. 1, the contact management system 102 is generally based on athree-tiered architecture, consisting of a front-end layer, applicationlogic layer, and a data layer. As is understood by skilled artisans inthe relevant computer and Internet-related arts, each module or engineshown in FIG. 1 represents a set of executable software instructions andthe corresponding hardware e.g., memory and processor) for executing theinstructions. To avoid obscuring the inventive subject matter withunnecessary detail, various functional modules and engines that are notgermane to conveying an understanding of the inventive subject matterhave been omitted from FIG. 1. However, a skilled artisan will readilyrecognize that various additional functional modules and engines may beused with a social network system, such as that illustrated in FIG. 1,to facilitate additional functionality that is not specificallydescribed herein. Furthermore, the various functional modules andengines depicted in FIG. 1 may reside on a. single server computer, ormay be distributed across several server computers in variousarrangements. Moreover, although depicted in FIG. 1 as a three-tieredarchitecture, the inventive subject matter is by no means limited tosuch architecture.

As shown in FIG. 1, the front end consists of a user interface module(e.g., a web server) 104, which receives requests from variousclient-computing devices, and communicates appropriate responses to therequesting client devices. For example, the user interface module(s) 104may receive requests in the form of Hypertext Transport Protocol (HTTP)requests, or other web-based, application programming interface (API)requests. The client devices (not shown) may be executing conventionalweb browser applications, or applications that have been developed for aspecific platform to include any of a wide variety of mobile devices andoperating systems.

As shown in FIG. 1, the data layer includes several databases, includingmember profile databases 110, which stores general information containedon a social network profile, including general contact information,employer information, educational institution information, as well asinformation concerning various online or offline groups. Member profiledatabase 110 may contain information for member profiles for only asingle social network profile or for profiles on several differentsocial networks.

Consistent with some embodiments, when a person initially registers tobecome a member of the social network service, the person will beprompted to provide some personal information, such as his or her name,age (e.g., birth date), gender, interests, contact information, hometown, address, the names of the member's spouse and/or family members,educational background (e.g., schools, majors, etc.), current job title,job description, industry, employment history, skills, professionalorganizations, and so on. This information is stored, for example, inthe member profile database 110. Member profile database may alsocontain contact information such as lists of contacts, previousemployers, interests, organizational affiliations, as well as personaland professional: addresses, phone numbers and websites.

As shown in FIG. 1, the data layer also includes social graph database112, which is a particular type of database that uses graph structureswith nodes, edges, and properties to represent and store data. Ofcourse, with various alternative embodiments, any number of otherentities might be included in the social graph, and as such, variousother databases may be used to store data corresponding with otherentities.

Once registered, a member of a social network service may invite othermembers, or be invited by other members, to connect via the socialnetwork service. A “connection” may require a bi-lateral agreement bythe members, such that both members acknowledge the establishment of theconnection. Similarly, a member may elect to “follow” another member. Incontrast to establishing a “connection”, the concept of “following”another member typically is a unilateral operation, and at least withsome embodiments, does not require acknowledgement or approval by themember that is being followed. When one member follows another, themember who is following may receive automatic notifications aboutvarious activities undertaken by the member being followed. In additionto following another member, a user may elect to follow a company, atopic, a conversation, or some other entity. For purposes of the presentdisclosure, the term “connection” shall include both the hi-lateralagreement by both members and the unilateral operation of “following”.Each of the connections of a user may be included in social graphdatabase 112.

A social network service may also provide a broad range of otherapplications and services that allow members the opportunity to shareand receive information, often customized to the interests of themember. For example, a social network service may include a photosharing application that allows members to upload and share photos withother members. As such, at least with some embodiments, a photograph maybe a property or entity included within a social graph. Members of asocial network service may be able to self-organize into groups, orinterest groups, organized around a subject matter or topic of interest.Accordingly, the data for a group may be stored in database 112. When amember joins a group, his or her membership in the group will bereflected in the social graph data stored in the database with referencenumber 112. With some embodiments, members may subscribe to or joingroups affiliated with one or more companies. For instance, with someembodiments, members of the social network service may indicate anaffiliation with a company at which they are employed, such that newsand events pertaining to the company are automatically communicated tothe members. With some embodiments, members may be allowed to subscribeto receive information concerning companies other than the company withwhich they are employed. Here again, membership in a group, asubscription or following relationship with a company or group, as wellas an employment relationship with a company, are all examples of thedifferent types of relationships that may exist between differententities, as defined by the social graph and modeled with the socialgraph data of the database with reference number 112.

As shown in FIG. 1, the data layer also includes conversation database114, which may include information from various online servicesincluding an address book data 114 a from electronic address bookprovider, email data 114 b from an e-mail provider, and a calendar data114 c from an electronic calendar provider. In one embodiment, theelectronic address book provider, email provider, and electroniccalendar provider may each be hosted on a third party server (e.g.,third party server 118).

In the aggregate, the conversation database 114 may contain conversationcontent information including e-mail, calendar event notifications,meeting schedules, instant messaging histories, and telephone calltranscripts. The types of conversation data contained in conversationdatabase 110 may extend far beyond the examples presented. Any given oneof the conversation data providers may only contain a portion of theconversation data and correlate that information according to the typeof user interests that one networking site supports.

As illustrated in FIG. 1, the application layer of the contactmanagement system 102 includes a server that includes at least oneprocessing device configured to implement at least the respectivecontact management processes discussed herein. The contact managementsystem 102 includes a computer memory storing a contact database that inturn includes such address book system elements as contact entries and aset of merged contacts as well as the respective contact identifiers,merged contact records, and sets of merged contact fields.

Each of the sets of social network connections, as referenced above inrelation to the social graph data 112, and source contacts, asreferenced above in relation to the conversation database 114, may besynchronized with and maintained as a merged contact in the contact listof the contact management system 102. Not every connection or sourcecontact at every social network service or other online service e.g.,address book provider, email provider, calendar provider) may correspondto a contact in the contact list within the contact management system102. Connections and source contacts corresponding to a merged contactin the contact list may be synchronized with a contact entry within aset of contact entries. Each of the contact entries is subject to adeduplication process to assure the respective contact entrycorroborates with a particular merged contact. For those contact entriesthat do not contain duplicate contact entry elements, a merging processcombines a most recent and unique set of contact identifiers into mergedcontact fields with an a respective merged contact record. Eachrespective merged contact record corresponds to a merged contact in theset of merged contacts and makes up one entry in the contact list.

Each respective contact entry maintained by the contact managementsystem 102 may include one or more data fields to specify additionalinformation about the contact. In an example embodiment of the contactmanagement system 102, each respective contact entry includes a datafield to describe how the user met each respective contact.

As illustrated in FIG. 1, with some embodiments the contact managementsystem 102 is implemented as its own application server module such thatit operates as a stand-alone application. However, with variousalternative embodiments, the contact management system 102 may beimplemented as a service that operates in conjunction and is integratedwith a social network or other online service. With some embodiments,the contact management system 102 may include or have an associatedpublicly available application program interface (API) module 108 thatenables third-party applications to invoke the functionality of thecontact management system 102 over communication network 116.

As illustrated in FIG. 1, the contact management system 102 may includeAPI module 108, which, is coupled to and provides programmaticinterfaces to one or more suggestion modules 106. In one embodiment, theAPI module 108 may obtain information over communication network 116from the third party server 118 to be stored in databases 110, 112, or114 and later utilized by the suggestion module 106 in determining asuggested entry for the contact management system 102. The third partymay, for example, be a social network service, an address book provider,an email provider or a calendar provider. The suggestion modules 106are, in turn, coupled to the one or more databases 110, 112 and 114.

Generally, the suggestion module 106 takes as input parameters severalpieces of information from each of the databases 110, 112, and 114. Thesuggestion module 106, discussed in further detail below, analyzes eachpiece of information received from databases 110, 112 and 114 todetermine the level of significance of each piece of information inproviding an entry to a data field associated with a contact entrymaintained by the contact management system 102. Consistent withembodiments of the invention, the data field entry may include adescription of how and when a user met a contact. Information risingabove a certain level of significance may be used by the suggestionmodule 106 in determining a suggested entry for the contact managementsystem 102. This suggested entry may then be presented to a user device(not shown) by the user interface module 104. Details of the modules andprocesses comprising the suggestion module 106 are presented in greaterdetail below with respect FIG. 2.

FIG. 1 also illustrates a third party server 118 as having programmaticaccess to the communication network 116. The third party server 118 maybe coupled via, an API server to the communication network 116, forexample, via wired or wireless interfaces. The communication network 116may be a LAN, a WAN, the Internet, or other packet-switched datanetwork. Accordingly, a variety of different configurations areexpressly contemplated. In one embodiment, the third party server 118may, utilizing information retrieved from the communication network 116,support one or more features or functions of the contact managementsystem 102 on a website hosted by the third party. The third partywebsite may, for example, be a social network service having a pluralityof users each having a plurality of contacts to be managed by thecontact management system 102.

FIG. 2 is a block diagram illustrating various functional modules thatare part of a contact management system, according to some exampleembodiments. As discussed in reference to FIG. 1, suggestion module 106receives as inputs, a plurality of signals from each of the memberprofile databases 110, social graph data 112, and behavioural database114. Each of the signals received from the databases 110, 112 and 114represents the information discussed above in reference to each of thedatabases 110, 112, and 114. Each of these signals may be used by thesuggestion module 106 to suggest an entry into data field 206.

Data entry box 206 is an entry field to faciliate input (orconfirmation) of data that is stored for each of the contact entriesmaintained by the contact management system 102. Data entry box 206 is adesignated entry field to provide an indication of how and when a usermet the contact corresponding to each contact entry. Data entry box 206may include data entry field 208, which provides a description of theparticular details regarding how a user and a contact met. These detailsmay, for example, include a date, a time, a location, an event, acommunication or any combination therein, which is associated with theinitial meeting of the user and the contact. In some embodiments, dataentry box 206 also includes data entry field 210, which provides anindication of a third party who introduced the user and the contact Thethird party may or may not be an additional contact of the user.

Consistent with embodiments of the invention, the suggestion module 106may include an analysis module 202, which receives each of the inputsignals from each of the member profile databases 110, social graphdatabases 112, and behavioural databases 114 and analyzes them todetermine the level of significance of each in providing a descriptionof how the user initially met the contact. The signals analyzed by theanalysis module 204 may include, for example, educational background,employment history, calendar event notifications, schedule history,communication history (e.g., e-mail, instant message, chat, socialnetwork messaging, SMS, telephone call), social network connections,social network connection timing, social graph data, other socialnetwork profile information and any other information discussed inreference to databases 110, 112, and 114.

Consistent with some embodiments, each signal received by the suggestionmodule 106 may be assigned a relative weight according to the level ofsignificance. The level of significance assigned to each signal isdependent on several factors. With some embodiments, these factors mayinclude, for example, the relative timing of each piece of informationand the respective relationships between each piece of information. Forexample, information received from the member profile database 110 andsocial graph data 112 may indicate that the user and the contact bothreceived a calendar event invitation to the same event and may furtherindicate that the user added the contact as a social network connection.In this example, the analysis module 202 may assign a greater weight tothese pieces of information if the event and social network connectionaddition occurred within the same day rather than being separated byseveral months.

In some embodiments, the level of significance assigned to each signaldepends on the particular type of information for which the level ofsignificance is being determined. For example, employment historyinformation received from the member profile database 110 and socialgraph data 112 may indicated that the user and the contact were bothemployed by the same employer in the past. In this example, the analysismodule 202 may assign a lower weight to this piece of information if theemployer has over 500employees than if the employer had only 50employees.

As illustrated by FIG. 2, suggestion module 106 may also includedetermination module 206 operatively coupled to the analysis module 204.Using the level of significance of each signal, as determined by theanalysis module 204, determination module 206 determines a suggesteddescription of how a user met a contact of the user. This suggestion isprovided to a user via user interface module 104 as a suggested entry todata entry field 208, and optionally, a further entry to data entryfield 210 of data entry box 206.

Determination module 206 makes the determination of the suggested entryin response to one or more of the signals received from databases 110,112 and 114 exceeding a threshold level of significance. With someembodiments, the threshold level of significance may be based, forexample, on rules-based module defined by heuristic methods used ininferring how a user met a contact. With other embodiments, the level ofsignificance may be based on the number of input signals received of thenumber of received input signals have any significance in determininghow a user met a contact.

Consistent with embodiments of the present invention, the determinationmodule 206 may infer how the user met the contact using one or more ofthe signals received from the databases 110, 112 and 114 that exceed thethreshold level of significance. The signals used by the determinationmodule 206 in making the determination may include, for example,educational history, employment history, calendar event history,communication history (e.g., e-mail, instant message, Chat, socialnetwork messaging. SMS, telephone call), social network connections,social network connection timing, other social network profileinformation and any other information discussed in reference todatabases 110, 112, and 114. For example, the determination module 206may infer that the user met the contact while attending the same school,if the user and the contact each have an email address having a domainname corresponding with the same school. In this example, thedetermination module 206 may also make the determination that the userand contact met each other while attending the same school if both theuser and the contact have the same school listed in an education historyfield of a social network profile. In another example, the determinationmodule 206 may determine that the user met the contact while both wereemployed at the same employer based on the user and the contact havingthe same employer listed in an employment history field of a profile ofa social network. In this example, the determination module may inferthat the user and the contact met while working for the same employer ifboth the user and the contact belong to a group of users of a socialnetwork that the system determines to be a group of employees of anemployer based on the social data associated with each member of thegroup. In yet another example, the determination module 206 may inferthat the user met the contact while attending the same event if both theuser and the contact received a calendar invitation to the same eventand the user added the contact to the contact management system shortlyafter the date of the event. In still another example, the determinationmodule 206 may infer that the user met the contact through some form ofcommunication which was the communication between the contact and theuser. In this example, the communication may be an e.g., e-mail, instantmessage, chat, social network messaging, SMS, phone call.

In some embodiments, the determination module 206 may provide asuggestion of a third party who may have introduced the user and thecontact if one or more of the signals exceeding the threshold is alsoassociated with the third party. For example, if a user and a contactfirst communicate through an email thread originally sent by a thirdparty to the user, the determination module 206 may determine that theuser and the contact met through the email. In this example, thedetermination module 206 may further infer that the third party, whooriginally sent the email, introduced the user and the contact.

Methods

FIG. 3 is a flow chart illustrating, a method 300 of automatic discoveryof how and when people met, according to example embodiment. At block302 the analysis module 202 may analyze a plurality of signals receivedfrom data base 110, 112 and 114. Each of the signals is analyzed by theanalysis module 202 to determine the level of significance of each inproviding an entry to an entry data field (e.g., data fields 208 and210) of a contact management system (e.g. contact management system102). The data field of the contact management system to provide adescription of how a user met a contact, which corresponds to a contactentry in the contact management system. In some embodiments, thedescription of how a user met a contact may include, for example, adate, a time, a location, an event, a communication or any combinationtherein, which is associated with the initial meeting of the user andthe contact. In another embodiment, the description of how a user met acontact includes an identification of a third party who introduced theuser to the contact The third party may be an additional contact of theuser whose contact details are also maintained in a contact entry of thecontact management system.

At block 304, the determination module 204 determines a suggested entryto the data field of the contact management system responsive to atleast one signal of the plurality of signals received from the databases110, 112, and 114 exceeding a threshold level of significance. Thesuggested entry to the data field of the contact management system toprovide a description of how the user met the contact.

At block 306, the user interface module 102 may automatically providedisplay data to display the suggested entry of the data field of thecontact management system determined by the determination module 204.According to some embodiments, the user may then be given the ability toconfirm, reject or edit the description of how the user met the contact,as presented in the suggested entry.

FIG. 4 is an interface diagram illustrating a user interface of thecontact management system displaying a contact entry 400 maintained by acontact management system, as may be used in an example embodiment. Thecontact entry 400 may be presented to a device of a user by the userinterface module 104. As illustrated in FIG. 4, contact entry 400 mayinclude several data field entries, each of which may provide certaindetails about the contact corresponding to contact entry 400.Particularly, data entry box 206 may provide details related to theinitial meeting of a user and the contact corresponding to contact entry400.

In an example embodiment, data entry box 206 includes data entry field208, which is a field designated to provide details of how and when auser initially met the contact corresponding to contact entry 400.Suggestion module 106 may determine a suggested entry 402 to bepresented in data entry field 208 by the user interface module 104. Inthis example embodiment, the suggestion module 106 has determined thatthe user may have met the contact while working for the same employer.Consistent with embodiments of the present disclosure, the user mayconfirm the suggested entry 402 by clicking save button 404. In anotherembodiment, the user may edit suggested entry 402 to provide a moreaccurate description of how the user initially met the contact. In yetanother embodiment, the user may completely reject suggested entry 402and provide the user's own description of the initial meeting of thecontact in data entry field 208.

As illustrated in FIG. 4, data entry box 206 also includes data entryfield 210, which is designated to provide the name of a third party thatmay have introduced the user to the contact. In some embodiments, thethird party may be an additional contact of the user that may also havea corresponding contact entry maintained by the contact managementsystem 102. The suggestion module 106 may also provide the user with asuggested entry to indentify the third party that introduced the contactto the user. Similar to suggested entry 402, the user may confirm, editor reject this suggestion.

Consistent with aspects of this embodiment, third party contacts may betagged as a valued contact of the user if the third party contact hasintroduced the user to multiple other contacts. A third party contactswho regularly introduces the user to additional contacts may be taggedby the contact management system 102 as a valued contact because of thehigh likelihood that the third party contact may again introduce theuser to additional contacts that will be of value to the user. Forexample, a third party contact who has introduced the user to severalcontacts, many of whom have entered into a sales contract with the user,may be tagged as a valued contact because the third party contact willlikely introduce the user to additional contacts, thus providingadditional sales opportunities to the user.

Modules, Components and Logic

Certain embodiments are described herein as including logic or a numberof components, modules, or mechanisms. Modules may constitute eithersoftware modules (e.g., code embodied (1) on a non-transitorymachine-readable medium or (2) in a transmission signal) orhardware-implemented modules. A hardware-implemented module is tangibleunit capable of performing certain operations and may be configured orarranged in a certain manner. In example embodiments, one or morecomputer systems (e.g., a standalone, client or server computer system)or one or more processors may be configured by software (e.g., anapplication or application portion) as a hardware-implemented modulethat operates to perform certain operations as described herein.

In various embodiments, a hardware-implemented module may be implementedmechanically or electronically. For example, a hardware-implementedmodule may comprise dedicated circuitry or logic that is permanentlyconfigured (e.g., as a special-purpose processor, such as a fieldprogrammable gate array (FPGA) or an application-specific integratedcircuit (ASIC)) to perform certain operations. A hardware-implementedmodule may also comprise programmable logic or circuitry (e.g., asencompassed within a general-purpose processor or other programmableprocessor) that is temporarily configured by software to perform certainoperations. It will be appreciated that the decision to implement ahardware-implemented module mechanically, in dedicated and permanentlyconfigured circuitry, or in temporarily configured circuitry (e.g.,configured by software) may be driven by cost and time considerations.

Accordingly, the term “hardware-implemented module” should be understoodto encompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired) or temporarily ortransitorily configured (e.g., programmed) to operate in a certainmanner and/or to perform certain operations described herein.Considering embodiments in which hardware-implemented modules aretemporarily configured (e.g., programmed), each of thehardware-implemented modules need not be configured or instantiated atany one instance in time. For example, where the hardware-implementedmodules comprise a general-purpose processor configured using software,the general-purpose processor may be configured as respective differenthardware-implemented modules at different times. Software mayaccordingly configure a processor, for example, to constitute aparticular hardware-implemented module at one instance of time and toconstitute a different hardware-implemented module at a differentinstance of time.

Hardware-implemented modules can provide information to, and receiveinformation from, other hardware-implemented modules. Accordingly, thedescribed hardware-implemented modules may be regarded as beingcommunicatively coupled. Where multiple of such hardware-implementedmodules exist contemporaneously, communications may be achieved throughsignal transmission (e.g., over appropriate circuits and buses) thatconnect the hardware-implemented modules. In embodiments in whichmultiple hardware-implemented modules are configured or instantiated atdifferent times, communications between such hardware-implementedmodules may be achieved, for example, through the storage and retrievalof information in memory structures to which the multiplehardware-implemented modules have access. For example, onehardware-implemented module may perform an operation, and store theoutput of that operation in a memory device to which it iscommunicatively coupled. A further hardware-implemented module may then,at a later time, access the memory device to retrieve and process thestored output. Hardware-implemented modules may also initiatecommunications with input or output devices, and can operate on aresource (e.g., a collection of information).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions. The modulesreferred to herein may, in some example embodiments, compriseprocessor-implemented modules.

Similarly, the methods described herein may be at least partiallyprocessor-implemented. For example, at least some of the operations of amethod may be performed by one or processors or processor-implementedmodules. The performance of certain of the operations may be distributedamong the one or more processors, not only residing within a singlemachine, but deployed across a number of machines. In some exampleembodiments, the processor or processors may be located in a singlelocation (e.g., within a home environment, an office environment or as aserver farm), while in other embodiments the processors may bedistributed across a number of locations.

The one or more processors may also operate to support performance ofthe relevant operations in a “cloud computing” environment or as a“software as a service” (SaaS). For example, at least some of theoperations may be performed by a group of computers (as examples ofmachines including processors), these operations being accessible via anetwork (e.g., the Internet) and via one or more appropriate interfaces(e.g., Application Program Interfaces (APIs).)

Example embodiments may be implemented in digital electronic circuitry,or in computer hardware, firmware, software, or in combinations of them.Example embodiments may be implemented using a computer program product,e.g., a computer program tangibly embodied in an information carrier, ina machine-readable medium for execution by, or to control the operationof, data processing apparatus, e.g., a programmable processor, acomputer, or multiple computers.

A computer program can be written in any form of programming language,including compiled or interpreted languages, and it can be deployed inany form, including as a stand-alone program or as a module, subroutine,or other unit suitable for use in a computing environment. A computerprogram can be deployed to be executed on one computer or on multiplecomputers at one site or distributed across multiple sites andinterconnected by a communication network.

In example embodiments, operations may be performed by one or moreprogrammable processors executing a computer program to performfunctions by operating on input data and generating output. Methodoperations can also be performed by, and apparatus of exampleembodiments may be implemented as, special purpose logic circuitry,e.g., a field programmable gate array (FPGA) or an application-specificintegrated circuit (ASIC).

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other. Inembodiments deploying a programmable computing system, it will beappreciated that that both hardware and software architectures requireconsideration. Specifically, it will be appreciated that the choice ofwhether to implement certain functionality in permanently configuredhardware (e.g., an ASIC), in temporarily configured hardware (e.g., acombination of software and a programmable processor), or a combinationof permanently and temporarily configured hardware may be a designchoice. Below are set out hardware (e.g., machine) and softwarearchitectures that may be deployed, in various example embodiments.

FIG. 5 is a block diagram of machine in the example form of a computersystem 500 within which instructions, for causing the machine to performany one or more of the methodologies discussed herein, may be executed.In alternative embodiments, the machine operates as a standalone deviceor may be connected (e.g., networked) to other machines. In a networkeddeployment, the machine may operate in the capacity of a server or aclient machine in server-client network environment, or as a peermachine in a peer-to-peer (or distributed) network environment. Themachine may be a personal computer (PC), a tablet PC, a set-top box(STB), a Personal Digital Assistant (PDA), a cellular telephone, a webappliance, a network router, switch or bridge, or any machine capable ofexecuting instructions (sequential or otherwise) that specify actions tobe taken by that machine. Further, while only a single machine isillustrated, the term “machine” shall also be taken to include anycollection of machines that individually or jointly execute a set (ormultiple sets) of instructions to perform any one or more of themethodologies discussed herein.

The example computer system 500 includes a processor 502 (e.g., acentral processing unit (CPU), a graphics processing unit (GPU) orboth), a main memory 504 and a static memory 506, which communicate witheach other via a bus 508. The computer system 500 may further include avideo display unit 510 (e.g., a liquid crystal display (LCD) or acathode ray tube (CRT)). The computer system 500 also includes analphanumeric input device 512 (e.g., a keyboard), a user interface (UI)navigation device 514 (e.g., a mouse), a disk drive unit 516, a signalgeneration device 518 (e.g., a speaker) and a network interface device520.

The disk drive unit 516 includes a machine-readable medium 522 on whichis stored one or more sets of instructions and data structures (e.g.,software) 524 embodying or utilized by any one or more of themethodologies or functions described herein. The instructions 524 mayalso reside, completely or at least partially, within the main memory504 and/or within the processor 502 during execution thereof by thecomputer system 500, the main memory 504 and the processor 502 alsoconstituting machine-readable media.

While the machine-readable medium 522 is shown in an example embodimentto be a single medium, the term “machine-readable medium” may include asingle medium or multiple media (e.g., a centralized or distributeddatabase, and/or associated caches and servers) that store the one ormore instructions or data structures. The term “machine-readable medium”shall also be taken to include any tangible medium that is capable ofstoring, encoding or carrying instructions for execution by the machineand that cause the machine to perform any one or more of themethodologies of the present invention, or that is capable of storing,encoding or carrying data structures utilized by or associated with suchinstructions. The term “machine-readable medium” shall accordingly betaken to include, but not be limited to, solid-state memories, andoptical and magnetic media. Specific examples of machine-readable mediainclude non-volatile memory, including by way of example semiconductormemory devices, e.g., Erasable Programmable Read-Only Memory (EPROM),Electrically Erasable Programmable Read-Only Memory (EEPROM), and flashmemory devices; magnetic disks such as internal hard disks and removabledisks; magneto-optical disks; and CD-ROM and DVD-ROM disks.

The instructions 524 may further be transmitted or received over acommunications network 526 using a transmission medium. The instructions524 may be transmitted using the network interface device 520 and anyone of a number of well-known transfer protocols (e.g., HTTP). Examplesof communication networks include a local area network (“LAN”), a widearea network (“WAN”), the Internet, mobile telephone networks, Plain OldTelephone (POTS) networks, and wireless data networks (e.g., WiFi andWiMax networks). The term “transmission medium” shall be taken toinclude any intangible medium that is capable of encoding or carryinginstructions for execution by the machine, and includes digital oranalog communications signals or other intangible media to facilitatecommunication of such software.

Although an embodiment has been described with reference to specificexample embodiments, it will be evident that various modifications andchanges may be made to these embodiments without departing from thebroader spirit and scope of the invention. Accordingly, thespecification and drawings are to be regarded in an illustrative ratherthan a restrictive sense. The accompanying drawings that form a parthereof, show by way of illustration, and not of limitation, specificembodiments in which the subject matter may be practiced. Theembodiments illustrated are described in sufficient detail to enablethose skilled in the art to practice the teachings disclosed herein.Other embodiments may be utilized and derived therefrom, such thatstructural and logical substitutions and changes may be made withoutdeparting from the scope of this disclosure. This Detailed Description,therefore, is not to be taken in a limiting sense, and the scope ofvarious embodiments is defined only by the appended claims, along withthe full range of equivalents to which such claims are entitled.

Such embodiments of the inventive subject matter may be referred toherein, individually and/or collectively, by the term “invention” merelyfor convenience and without intending to voluntarily limit the scope ofthis application to any single invention or inventive concept if morethan one is in fact disclosed. Thus, although specific embodiments havebeen illustrated and described herein, it should be appreciated that anyarrangement calculated to achieve the same purpose may be substitutedfor the specific embodiments shown. This disclosure is intended to coverany and all adaptations or variations of various embodiments.Combinations of the above embodiments, and other embodiments notspecifically described herein, will be apparent to those of skill in theart upon reviewing the above description.

Although the present invention has been described with reference tospecific example embodiments, it will be evident that variousmodifications and changes may be made to these embodiments withoutdeparting from the broader scope of the invention. Accordingly, thespecification and drawings are to be regarded in an illustrative ratherthan a restrictive sense.

What is claimed is:
 1. A method comprising: obtaining a plurality ofsignals from one or more databases, the plurality of signals comprisingdata associated with a user, the data comprising an electroniccommunication history between the user and a contact maintained by acontact management system; identifying, based on an analysis of theplurality of signals, a third party that introduced the user to thecontact; determining a suggested entry for a data field of the contactmanagement system based on the plurality of signals, the suggested entrybeing the description of how the user initially met the contact, thedescription including an identifier of the third party: that introducedthe user to the contact; and automatically providing display data todisplay the suggested entry for the data field of the contact managementsystem.
 2. The method of claim 1, further comprising: displaying a userinterface element that provides the user with an ability to confirm orreject the suggested entry.
 3. The method of claim I, furthercomprising: displaying a user interface element that provides the userwith an ability to edit the suggested entry.
 4. The method of claim 1,wherein the plurality of signals further include at least one of aneducational background, an employment history, a calendar eventnotification, a schedule history, social network connections, socialnetwork connection timing, and social graph data.
 5. The method of claim1, wherein the determining the suggested entry further includesinferring, based on the user and the contact each having an emailaddress with a domain name corresponding to the same school, that theuser and the contact attended a school together.
 6. The method of claim1, wherein the determining the suggested entry is based on inferringthat the user and the contact of the user attended an event together. 7.The method of claim I, wherein the determining the suggested entryincludes analyzing a previous communication between the user and thecontact of the user.
 8. The method of claim 7, wherein the previouscommunication includes at least one of an email, a message sent via asocial network service, or a phone call.
 9. The method of claim 1,wherein: the communication history includes an email received from thethird party for purposes of introducing the user and the contact of theuser; and the analyzing of the communication history includesdetermining that an email address of the contact was included as anaddressee of the email or included as a carbon copy recipient of theemail.
 10. The method of claim I, further comprising tagging the thirdparty as a valued contact.
 11. The method of claim 1, wherein thedetermining the suggested entry is further based on informationassociated with creation of a social network connection between the userand the contact.
 12. The method of claim 11, wherein the determining thesuggested entry includes analysing a timing of the creation of thesocial network connection.
 13. The method of claim 1, further comprisingdetermining a level of significance of each of the plurality of signalsin providing a description of how the user initially met the contact.14. The method of claim 1, wherein the determining the suggested entryinferring that the user and the contact are employed by a commonemployer.
 15. The method of claim 14, wherein the inferring that theuser and the contact are employed at the same employer includesdetermining the user and the contact are associated with a group ofadditional users that share the common employer.
 16. A non-transitorymachine-readable storage medium embodying a set of instructions, thatwhen executed by at least one processor, cause at least one processor toperform operations comprising: obtaining a plurality of signals from oneor more databases, the plurality of signals comprising data associatedwith a user, the data comprising an electronic communication historybetween the user and a contact maintained by a contact managementsystem; identifying, based on an analysis of the plurality of signals, athird party that introduced the user to the contact; determining asuggested entry for a data field of the contact management system basedon the plurality of signals, the suggested entry being the descriptionof how the user initially met the contact, the description including anidentifier of the third party that introduced the user to the contact;and automatically providing display data to display the suggested entryfor the data field of the contact management system.
 17. Thenon-transitory machine-readable storage medium of claim 16, furthercomprising providing the user with an ability to edit the suggestedentry.
 18. The non-transitory machine-readable storage medium of claim16, wherein determining the suggested entry includes: determining of alevel of significance of each of the plurality of signals in providing adescription of how the user met the contact; and assigning a weight toeach signal based on the level of significance of the signal.
 19. Thenon-transitory machine-readable storage medium of claim 18, wherein thelevel of significance is based on a timing of the inclusion of thecontact into the contact management system,
 20. A system comprising: atleast one processor for executing instructions; a memory device incommunication with the at least one processor and storing instructionsrepresenting a suggestion module, which, when executed by the at leastone processor is to perform operations comprising: obtaining a pluralityof signals from one or more databases, the plurality of signalscomprising data associated with a user, the data comprising anelectronic communication history between the user and a contactmaintained by a contact management system; identifying, based on ananalysis of the plurality of signals, a third party that introduced theuser to the contact; determining a suggested entry for a data field ofthe contact management system based on the plurality of signals, thesuggested entry being the description of how the user initially met thecontact, the description including an identifier of the third party thatintroduced the user to the contact; and automatically providing displaydata to display the suggested entry for the data field of the contactmanagement system.